package com.jytc.framework.bo;

import java.util.List;

import com.jytc.framework.commons.Page;
import com.jytc.framework.commons.PropertyFilter;
import com.jytc.framework.dto.FwDeptDTO;
import com.jytc.framework.po.FwDept;

/**
 * @title: FSysCorpBO.java
 * @description: 单位管理业务操作接口
 * 
 * @author: dongyuese
 *
 */
public interface FwDeptBO
{
	/**
	 * 保存单位管理信息
	 * @param sysCorpDTO　单位管理信息数据传输对象
	 * @return　保存成功或失败
	 */
	int save(FwDeptDTO fwDeptDTO) throws Exception;

	/**
	 * 根据单位ID查询单位信息
	 * @param corpId　单位ID
	 * @return　单位管理信息数据传输对象
	 */
	FwDeptDTO findById(Integer corpId) throws Exception;

	/**
	 * 根据单位ID删除单位信息
	 * @param corpId　单位ID
	 * @return　删除成功或失败
	 */
	int deleteById(Integer corpId) throws Exception;

	/**
	 * 根据单位ID集合批量删除单位信息
	 * @param corpIds　单位ID集合
	 * @return　删除成功或失败
	 * @throws Exception
	 */
	int deleteByIds(Integer[] corpIds) throws Exception;

	/**
	 * 按照条件分页查询单位信息
	 * @param page　分页信息
	 * @param filters　过滤条件列表
	 * @return　单位信息集合
	 * @throws Exception
	 */
	Page query(final Page page, final List<PropertyFilter> filters) throws Exception;

	/**
	 * 查询符合条件的单位信息
	 * 
	 * @param filters
	 * @return
	 * @throws Exception
	 */
	List<FwDept> query(final List<PropertyFilter> filters) throws Exception;

	/**
	 * 按照属性名及对应属性值查询单位信息
	 * @param propertyName　属性名
	 * @param value　属性值
	 * @return　单位信息集合
	 * @throws Exception
	 */
	List<FwDept> findByCorpType(final String propertyName, final Object value) throws Exception;

	/**
	 * 修改单位管理信息
	 * @param sysCorpDTO　单位管理信息数据传输对象
	 * @return　修改成功或失败
	 */
	int update(FwDeptDTO fwDeptDTO) throws Exception;

	/**
	 * 根据单位ID获取单位对应的区域范围信息
	 * @param corpId　单位ID
	 * @return　区域信息
	 */
	String getRegionByCorpId(Integer corpId) throws Exception;

	/**
	 * 查询所有的单位
	 * @return 单位集合
	 * @throws Exception
	 */
	List<FwDept> findAll() throws Exception;

	/**
	 * 根据父单位ID查询下级单位
	 * @param parentId　父单位ID
	 * @return　返回下级单位
	 * @throws Exception
	 */
	List<FwDept> queryByParentId(Integer parentId) throws Exception;

}
